import requests
import json
from datetime import datetime
from typing import Dict, Any, List

class DeepSeekChat:
    def __init__(self, api_key: str):
        # 保存 API Key，并设置 DeepSeek Chat API 的请求地址和请求头
        self.api_key = api_key
        self.api_url = "https://api.deepseek.com/v1/chat/completions"
        self.headers = {
            "Authorization": f"Bearer {api_key}",  # 认证信息
            "Content-Type": "application/json"      # 请求内容类型
        }
    
    def _format_context(self, sensor_data: Dict[str, float], device_states: Dict[str, Any]) -> str:
        """
        格式化传感器和设备数据为上下文信息。
        将当前环境的传感器数据和设备状态拼接为一段结构化文本，
        作为 AI 聊天的上下文输入。
        :param sensor_data: 当前传感器数据字典
        :param device_states: 当前设备状态字典
        :return: 格式化后的上下文字符串
        """
        context = "## 当前环境状态\n\n"
        
        # 添加传感器数据
        context += "### 传感器数据\n"
        context += f"- 温度：{sensor_data['temperature']}°C\n"
        context += f"- 湿度：{sensor_data['humidity']}%\n"
        context += f"- 水位：{sensor_data['water_level']}%\n\n"
        
        # 添加设备状态
        context += "### 设备状态\n"
        context += f"- 空调：{'运行中' if device_states['ac']['running'] else '关闭'}，"
        context += f"模式：{device_states['ac']['mode']}，"
        context += f"设定温度：{device_states['ac']['temperature']}°C\n"
        
        context += f"- 除湿器：{'运行中' if device_states['dehumidifier']['running'] else '关闭'}，"
        context += f"模式：{device_states['dehumidifier']['mode']}，"
        context += f"目标湿度：{device_states['dehumidifier']['target']}%\n"
        
        context += f"- 水阀：{'开启' if device_states['valve']['running'] else '关闭'}，"
        context += f"开度：{device_states['valve']['opening']}%，"
        context += f"流量：{device_states['valve']['flow']} L/min\n"
        
        return context
    
    def generate_response(self, user_query: str, sensor_data: Dict[str, float], device_states: Dict[str, Any]) -> str:
        """
        生成智能回答。
        将用户问题、当前传感器数据和设备状态一同发送给 DeepSeek Chat API，
        获取 AI 生成的回复。
        :param user_query: 用户输入的问题
        :param sensor_data: 当前传感器数据
        :param device_states: 当前设备状态
        :return: AI 生成的回复字符串
        """
        ######################## LAB3 ##########################################

        #######################################################################
        return f"你还没有对接 AI 哦"